package collection;

import java.io.OutputStream;
import java.util.*;

/**
 * java.util.List接口
 * List继承自Collection,是可以存放重复元素且有序的集合.
 * 特点:可以通过下标操作元素,使用更灵活
 * List常用实现类:
 * java.util.ArrayList:内部使用数组实现,查询性能更好(随机访问)
 *  * java.util.LinkedList:内部使用链表实现,增删元素性能更好,首尾增删性能最佳.
 *  *
 *  * 在对集合操作的性能没有特别苛刻要求时,通常ArrayList是最好的选择.*/
public class ListDemo {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("one");
        list.add("2");
        list.add("3");
        list.add("4");
        list.add("five");
        list.add(1,"two");
        System.out.println("list:"+list);
        /*List接口中提供了一套可以通过下标操作元素的方法
        * E get(int index)   获取指定下标对应的元素*/
        String e = list.get(4);
        System.out.println(e);
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }
        /*E set(int index,E e)  将给定元素设置到指定位置,返回值为被替换的元素*/
        String old = list.set(2,"three");
        System.out.println(old);
        System.out.println(list);

        //翻转
        /*Collections  集合的工具类
        * reverse(list)  静态方法,反转集合*/
        Collections.reverse(list);
        for (int i = 0; i < list.size()/2; i++) {
            /*String old1 = list.set(list.size()-i-1, list.get(i));
            list.set(i,old1);*/
            list.set(i,list.set(list.size()-i-1, list.get(i)));
        }
//        for (int i = 0; i < list.size()/2; list.set(i,list.set(list.size()-i-1, list.get(i++))))
        System.out.println(list);


    }
}
